﻿using Ongoal.Quotation.Service;
using Ongoal.Quotation.Service.Model;
using Ongoal.Quotation.Service.Model.Sys;
using Ongoal.Quotation.Service.Param;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ongoal.Quotation.Service.Interface
{
    /// <summary>
    /// 菜单相关接口
    /// </summary>
    public interface IMenuService
    {
        /// <summary>
        /// 获取路由树
        /// </summary>
        /// <returns></returns>
        object GetMenu();
        /// <summary>
        /// 获取菜单树
        /// </summary>
        /// <param name="keyword"></param>
        /// <param name="MenuType"></param>
        /// <returns></returns>
        object GetMenuTree(string keyword, int MenuType);
        /// <summary>
        /// 增加菜单
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        object AddMenu(Menu model);

        /// <summary>
        /// 修改菜单
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        object EditMenu(Menu model);

        /// <summary>
        /// 删除菜单
        /// </summary>
        /// <param name="Ids"></param>
        /// <returns></returns>
        object DeleteMenu(List<int> Ids);

        /// <summary>
        /// 拖动
        /// </summary>
        /// <param name="source"></param>
        /// <param name="target"></param>
        /// <param name="type"></param>
        void DraggleMenu(Menu source, Menu target, int type);
        /// <summary>
        /// 获取当前菜单的操作
        /// </summary>
        /// <param name="MenuID"></param>
        /// <returns></returns>
        object GetMenuOperate(int MenuID);

        /// <summary>
        /// 获取当前菜单没有授权的操作
        /// </summary>
        /// <param name="MenuID"></param>
        /// <returns></returns>
        object GetNotMenuOperate(int MenuID,string keyword);

        /// <summary>
        /// 新增菜单操作数据
        /// </summary>
        /// <param name="MenuID"></param>
        /// <param name="Operateids"></param>
        /// <returns></returns>
        object AddMenuOperate(int MenuID, List<int> Operateids);
        /// <summary>
        /// 移除菜单操作数据
        /// </summary>
        /// <param name="tids"></param>
        /// <returns></returns>
        bool RemoveMenuOperate(List<int> tids);


        /// <summary>
        /// 获取已经授权的数据项类型
        /// </summary>
        /// <param name="MenuID"></param>
        /// <returns></returns>
        object GetMenuDataItem(int MenuID);
        /// <summary>
        /// 分配数据项
        /// </summary>
        /// <param name="MenuID"></param>
        /// <param name="catagoryids"></param>
        object AddMenuDataItem(int MenuID, List<int> catagoryids);
        /// <summary>
        /// 移除数据项
        /// </summary>
        /// <param name="MenuId"></param>
        /// <param name="Catagoryids"></param>
        bool RemoveDataItem(int MenuId, List<int> Catagoryids);

        /// <summary>
        /// 获取没有加入常用功能的菜单
        /// </summary>
        /// <returns></returns>
        object GetMenuNotUsual();
        /// <summary>
        /// 获取常规功能
        /// </summary>
        /// <returns></returns>
        object GetUsualMenu();
        /// <summary>
        /// 新增常用功能
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        object AddOUsualFunction(List<int> ids);


    }
}
